/*
 * timeOutToken.cpp
 *
 *  Created on: 09/08/2014
 *      Author: nicolas
 */

#include <sstream>
#include "../comun/TimeoutBroker.h"
#include <sys/types.h>
#include <signal.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syslog.h>
#include "../defines.h"
#include "../ipc/ColaMensajes.h"

using namespace std;

int main(int argc, char **argv) {

	if (argc != 5) {
		perror("Args insuficientes");
		exit(1);
	}

	stringstream strValue;
	strValue << argv[1];

	unsigned int timeOutID;
	strValue >> timeOutID;

	int time = atoi(argv[2]);

	int brokerIdLocal = atoi(argv[3]);

	int brokerIdGlobal = atoi(argv[4]);

	char encabezado[80];
	sprintf(encabezado, "TimeOutToken %i", timeOutID);

	openlog(encabezado, LOG_PID | LOG_CONS, LOG_LOCAL0);

	TimeoutBroker shmem(brokerIdLocal);

	sleep(time);

//	syslog(LOG_INFO, "Se cumplio el timeout");

	if (shmem.get() == timeOutID) {

		char mostrar[80];
		sprintf(mostrar, "TimeOut Token\n");
		write(fileno(stdout), mostrar, strlen(mostrar));

		ColaMensajes cola(RUTA, COLABROKER);
		MENSAJE_BROKER msg;
		msg.tipo = TIPO_REGENERAR_ANILLO;
		msg.destinatario = brokerIdGlobal;
		cola.enviar(&msg, TAM_MENSAJE_BROKER, false);

	}

}

